strerror関数は、エラー番号(errnum)に対する説明文を取得します。
#include <string.h>
char *strerror(int errnum);
errnumはエラー番号を指定します。
戻り値として、エラー内容を説明する文字列を返します。また、未定義のエラー番号の場合は「Unknown error nnn」というメッセージを返します。
通常、引数には大域変数errnoを指定すると思いますので、errno.hをインクルードするとよいでしょう。
プログラム 例
#include <stdio.h> #include <string.h> #include <errno.h> /* errno定義 */ #define SIZE 1024 int main(int argc, char **argv) { FILE *fp; char buff[SIZE]; int return_code = 0; if (argc == 2) { if ((fp = fopen(*(argv + 1), 'r')) != NULL) { while(fgets(buff, SIZE, fp) != NULL) { printf('%s', buff); } fclose(fp); } else { fprintf(stderr, 'main() : %s\n', strerror(errno)); return_code = 1; } } else { fprintf(stderr, 'main() : 実行時引数の数が不当です\n'); return_code = 2; } return return_code; }
例の実行結果
$ ./strerror.exe temp_1.txt Hello World!!. Bye. $ $ ./strerror.exe temp_9.txt main() : No such file or directory $